package com.chrray.position.service.position;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.service.IService;
import com.chrray.position.domain.FdJobPostings;
import com.chrray.position.domain.dto.*;
import com.chrray.position.domain.dto.search.*;
import com.chrray.position.domain.vo.FdJobPostingsVO;
import com.chrray.position.enums.app.FdWorkJobStateEnum;

import java.util.List;

public interface FdJobService extends IService<FdJobPostings> {
    void publishJob(FdJobPostingsDTO job);

    IPage<GrabJobsDTO> nearbyJobs(GrabJobSearch search);

    IPage<GrabJobsDTO> pageList(JobPageSearch search);

    boolean grabJob(Long jobId);

    FdJobPostingsVO jobDetail(Long jobId);

    List<GrabJobsDTO> recommend(JobPageSearch search);

    IPage<GrabJobsDTO> myApply(MyJobSearchSearch state);

    Boolean cancelApply(Long jobId);

    Boolean collectJob(Long jobId);

    IPage<GrabJobsDTO> favoritesList(MyJobSearchSearch search);

    IPage<MyPubJobsDTO> bossMyPublish(BossJobPubSearch search);

    Boolean employ(Long jobId, Long userId);

    IPage<JobRelWorkerDTO> jobRelWorker(BossJobRelWorkerSearch search);

    Boolean complete(Long jobId, Long userId);

    IPage<NearbyWorkerDTO> nearbyWorkers(GrabJobSearch search);

    Boolean rePublish(FdJobPostingsDTO job);

    String shareJob(Long jobId);

    Boolean cancelCollectJob(Long jobId);

    R endJob(Long jobId);

    R<String> cancelJob(Long jobId, Long userId);

    Boolean completeJob(Long jobId);
}
